Networks such as the Internet support a wide range of applications and corresponding network traffic flows. Different applications may have different requirements in terms of network throughput, delay, and loss. For example, interactive applications may require network traffic flows with low delay and low loss. In contrast, streaming applications may operate satisfactorily with relatively higher delay and loss, but may require high throughput.
In order to accommodate the different network traffic needs of these applications, different congestion control protocols have been developed. With loss-based protocols, bandwidth is increased until a loss event occurs, in which case the rate backs off. With delay-based protocols, the bandwidth is managed so that delay is low. While loss-based and delay-based protocols can operate efficiently in some networking environments, problems can occur when various network traffic flows are occurring at the same time. For example, loss-based flows can take over so that delay-based flows cannot compete fairly.